package com.itcast.kotlin_two.kotlin

// -------- 1. 定义数据类
// 学生数据类
data class Student(
    val id: Int,           // 学号（不可变）
    var name: String,      // 姓名（可变）
    val className: String, // 班级
    var score: Int = 60    // 成绩（带默认值）
)


fun main() {
    // 创建学生对象
    val stu1 = Student(
        id = 1001,
        name = "张三",
        className = "三年级二班"
    )

    val stu2 = Student(
        id = 1002,
        name = "李四",
        className = "三年级二班",
        score = 85
    )

    // 1. 自动生成 toString()
    println(stu1)

    // 2. 自动生成 equals()
    val stu3 = Student(1001, "张三", "三年级二班")
    println(stu1 == stu3) // true
    println(stu1 == stu2) // false

    // 3. 使用 copy() 创建修改后的副本
    val updatedStudent = stu1.copy(name = "李四", score = 75)
    println(updatedStudent)
    println(stu1 == updatedStudent)

    // 4. 解构声明（Destructuring）
    val (id, name, className, score) = stu2
    println("$name (学号:$id) 在 $className 的成绩是 $score 分")
    // 输出: 李四 (学号:1002) 在 三年二班 的成绩是 85 分
}